#pragma once

#include "stdafx.h"

class matrix4
{

public:
	double _00, _01, _02, _03;
	double _10, _11, _12, _13;
	double _20, _21, _22, _23;
	double _30, _31, _32, _33;
//Constructors/Destructors
	matrix4();
	~matrix4();

//Functions/Procedures
	void transpose();
	//void invert();
	void identity();
	void zero();
	double det();

	void rotateByAxisX(double angle);
	void rotateByAxisY(double angle);
	void rotateByAxisZ(double angle);

//Operators
	matrix4 operator+();
	matrix4 operator-();
	matrix4 operator+( matrix4 &other );
	matrix4 & operator+=(matrix4 &other );
	matrix4 operator-( matrix4 &other );
	matrix4 & operator-=( matrix4 &other );
	matrix4 operator*( matrix4 &other );
	matrix4 operator*( double &scalar );
	matrix4 operator*( float &scalar );
	matrix4 operator*( int &scalar );
	matrix4 & operator*=( matrix4 &other );
	matrix4 & operator*=( double &scalar );
	matrix4 & operator*=( float &scalar );
	matrix4 & operator*=( int &scalar );
	matrix4 operator/( double &scalar );
	matrix4 operator/( float &scalar );
	matrix4 operator/( int &scalar );
	matrix4 & operator/=( double &scalar );
	matrix4 & operator/=( float &scalar );
	matrix4 & operator/=( int &scalar );
	matrix4 & operator=( matrix4 &other );
	bool operator==(matrix4 &other);
	bool operator!=(matrix4 &other);

private:

};